package cn.shadow.game.chess.CHnchess.board;


import cn.shadow.game.chess.CHnchess.chessman.Chess;
import cn.shadow.game.chess.CHnchess.type.Camp;
import cn.shadow.game.chess.IBoard;


import java.util.List;
import java.util.Map;
import java.util.Stack;

public interface Board extends IBoard {
    Position getPoint(int row, int col);

    /**
     * 10行9列
     */
    int ROW = 10;
    int COL = 9;

    void init();

    void show();

    Map<Integer, Position> getTable();

    Chess getCommander(Camp camp);

    Map<Camp, List<Chess>> checkMate();

    Stack<Mover> getMovers();

    void regret();

    void click(int row, int col);

    boolean isOver();

    Chess getChose();

    boolean isBlack();

    void reset();

    Board copy(Board board);

    boolean moveTo(Chess mover, Position target);

    void doMoveTo(Chess selfChess, Position target);

    void setOver(boolean isOver);

    List<Position> getCanAttackPosition(Chess chess);

}
